package com.stefanini.pe.bbva.mbl.in.dao;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;

import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;

import com.stefanini.pe.bbva.mbl.carga.in.to.OrigenArchivo;
import com.stefanini.pe.bbva.mbl.carga.in.to.TablaPG;
import com.stefanini.pe.bbva.mbl.carga.in.to.UsuarioSesion;
import com.stefanini.pe.bbva.mbl.in.dao.iface.OrigenArchivoDAO;
import com.stefanini.pe.bbva.mbl.in.utils.Util;
import com.stefanini.pe.bbva.mbl.to.TablaTemporalTO;

import org.apache.log4j.Logger;

public class OrigenArchivoDAOImpl extends SqlMapClientDaoSupport implements OrigenArchivoDAO {
	private static Logger logger = Logger.getLogger(OrigenArchivoDAOImpl.class);
	

    public OrigenArchivoDAOImpl() {
        super();
    }

    public void insert(OrigenArchivo record) {
    	logger.info("Inicio");
    	
        getSqlMapClientTemplate().insert("ORIGEN_ARCHIVO.ibatorgenerated_insert", record);
        
        logger.info("Fin");
    }

    public void insertSelective(OrigenArchivo record) {
    	logger.info("Inicio");
    	
        getSqlMapClientTemplate().insert("ORIGEN_ARCHIVO.ibatorgenerated_insertSelective", record);
        
        logger.info("Fin");
    }
        
    /*	Inicio: lpolanco - 23/05/2012	*/
    public List<TablaTemporalTO> selectQueryList(String estado, Date fechaInicial, Date fechaFinal, String query){
    	OrigenArchivo keyConfig = new OrigenArchivo();
    	List<TablaTemporalTO> lista = new ArrayList<TablaTemporalTO>();
    	
    	logger.info("Inicio Lista");
    	
    	keyConfig.setEstado(estado);
    	keyConfig.setFechaInicial(fechaInicial);
    	keyConfig.setFechaFinal(fechaFinal);
        keyConfig.setQuery(query);
        
        lista = getSqlMapClientTemplate().queryForList("ORIGEN_ARCHIVO.selectByQueryList",keyConfig);
        
        logger.info("Fin Lista");
        
    	return lista;
    }
    /*	Fin: lpolanco - 23/05/2012	*/
    
    public List selectQuery(String estado, Date fechaInicial, Date fechaFinal, String query){
    	OrigenArchivo keyConfig = new OrigenArchivo();
    	List lista = null;
    	
    	logger.info("Inicio");
    	
    	keyConfig.setEstado(estado);
    	keyConfig.setFechaInicial(fechaInicial);
    	keyConfig.setFechaFinal(fechaFinal);
        keyConfig.setQuery(query);
        
        lista = (List)getSqlMapClientTemplate().queryForList("ORIGEN_ARCHIVO.selectByQueryLog",keyConfig);
        
        logger.info("Fin");
        
    	return lista;
    }
    
    public List selectQueryDetalle(BigDecimal idTemporal, String query){
    	OrigenArchivo keyConfig = new OrigenArchivo();
    	List lista = null;
    	
    	logger.info("Inicio");
    	
    	keyConfig.setIdTemporal(idTemporal);
    	keyConfig.setQuery(query);
    	lista = (List)getSqlMapClientTemplate().queryForList("ORIGEN_ARCHIVO.selectByQueryLogDetalle",keyConfig);
    	
    	logger.info("Fin");
    	
    	return lista;
    }
    
    public String insertAccionUsuario(String ip_usuario,
			   UsuarioSesion usuario, String fecha,
		       String pagina, String cod_area,
		       String des_area, String cod_moneda,
		       String des_moneda, String cod_unidad,
		       String des_unidad, String nivel,
		       String familia, String cliente,
		       String grupo, String contrato, String producto,String oficina_cliente){
    	HashMap map = new HashMap();
    	
    	logger.info("Inicio");
    	
        map.put("ip_usuario", ip_usuario);
        map.put("usuario", usuario.getRegistroHost());
        map.put("fecha", fecha);
        map.put("pagina", pagina);
        map.put("cod_area", cod_area);
        map.put("des_area", des_area);
        map.put("cod_moneda", cod_moneda);
        map.put("des_moneda", des_moneda);
        map.put("cod_unidad", cod_unidad);
        map.put("des_unidad", des_unidad);
        map.put("nivel", nivel);
        map.put("familia", familia);
        map.put("cliente", cliente);
        map.put("grupo", grupo);
        map.put("contrato", contrato);
        map.put("producto", producto);
        map.put("territorio", usuario.getCodTerritorio());
        map.put("oficina", usuario.getCodOficina());
        map.put("banca", usuario.getCodBanca());
        map.put("oficinaCliente", oficina_cliente);
        map.put("codigoSistema", "2");
        
        this.getSqlMapClientTemplate().queryForObject("ORIGEN_ARCHIVO.ibatorgenerated_insertAccion",map);
        String retorno= (String)map.get("retorno");
        
        logger.info("Fin");
        
        return retorno;
    }

	public List selectTablas() {
		List lista = null;
		
		logger.info("Inicio");
		
		lista = (List)getSqlMapClientTemplate().queryForList("ORIGEN_ARCHIVO.ibatorgenerated_selectAll",null);
		
		logger.info("Fin");
		
    	return lista;
	}

	public List seleccionarUnaTabla(TablaPG tablapg) {
		List lista = null;
		
		logger.info("Inicio");
		
		lista = (List)getSqlMapClientTemplate().queryForList("ORIGEN_ARCHIVO.ibatorgenerated_selectTabla",tablapg);
		
		logger.info("Fin");
		
		return lista;
	}   
}